The Field Programmable Gate Array (FPGA) is an integrated circuit (IC) that can be programmed in the field after manufacture. FPGAs are similar in principle to, but have vastly wider potential application than, programmable read-only memory (PROM) chips. FPGAs are used by engineers in the design of specialized ICs that can later be produced hard-wired in large quantities for distribution to computer manufacturers and end users. Ultimately, FPGAs might allow computer users to tailor microprocessors to meet their own individual needs. However, there are limitations in FPGAs that can affect a designer's decision to use them.
FPGAs are not only used in the designing of specialized ICs, FPGAs can also be incorporated into actual devices. One of the advantages in using FPGAs is that it enables the device to be multi-functional without having to increase the number of internal circuit components. Another advantage in using FPGAs is that logic configured therein is upgradeable. Instead of having to change the integrated chip, the existing FPGA can be reprogrammed with a new configuration. Therefore, FPGAs can be upgraded with logic that enables the device to be compatible with latest devices on the market. In the computer industry, this is a distinct advantage because the pace of the technology runs in about a five year cycle.
One of the disadvantages of using FPGAs is that currently each FPGA requires its own memory device. The memory device serves as the storage area for the configuration logic. The logic is placed into the FPGA and activated once the FPGA has been initialized. One disadvantage to having a separate memory device for each FPGA is the overall cost. Furthermore, memory prices have a tendency to fluctuate. This cost factor has an effect on cost effective design choices. The other disadvantage with the individual memory devices is the amount of space required on the circuit board. Circuit board space is a never ending battle especially when fitting multi-function devices within an enclosure that is satisfactory with the consumer. The addition of multiple FPGAs does not help the problem if each FPGA is required to have its own memory device. Furthermore, there is a redundancy in the system with memory devices storing the identical configuration logic for each FPGA.
Finally, an integrated chip such as an FPGA can malfunction and disrupt the operation of a system or device. With FPGAs, it is not possible to check the status or condition of the FPGA without pulling the FPGA from its slot. Further complicating the problem is the ability to detect whether the FPGA is the cause of the malfunction.
Accordingly, it is desirable to provide a system and method to reduce the number of storage devices used to configure an FPGA. The resulting benefit is the reduction of component costs and the increase in availability of real estate on the circuit board. There is an additional need to determine the status or functionality of the FPGAs.